home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
AMIGA
/
(A)Z
/
(A)Z11.ADF
/
LOGO
/
LOGOSOURCE
/
y.tab.c
< prev
next >
Wrap
C/C++ Source or Header
|
1987-07-21
|
36KB
|
1,523 lines
/*
* logo.y -> y.tab.c + plus edits here
*/
# define LOWPREC 257
# define UNARY 258
# define TWOOP 259
# define ONEOP 260
# define NOOP 261
# define ONECOM 262
# define CSTRING 263
# define UINT 264
# define LTO 265
# define IFCOM 266
# define LEDIT 267
# define LIFTF 268
# define LTRACE 269
# define LPROC 270
# define LPEND 271
# define LAEND 272
# define LGO 273
# define CLIST 274
# define TWOCOM 275
# define NOCOM 276
# define RUNCOM 277
# define RNEND 278
# define REPCOM 279
# define THREECOM 280
# line 14
#include "logo.h"
char popname[NAMELEN+1];
int multnum;
struct object *multarg = 0;
#include <setjmp.h>
extern jmp_buf runret;
jmp_buf yerrbuf;
int catching = 0;
int flagquit = 0;
extern struct runblock *thisrun;
#ifndef NOTURTLE
extern int turtdes;
extern struct display *mydpy;
#endif
int errtold = 0;
int yyline =0;
char ibuf[IBUFSIZ] ={0};
char *ibufptr =NULL;
char *getbpt =0;
char titlebuf[100] ={0};
char *titleptr =NULL;
extern char *cpystr();
int letflag =0;
int topf =0;
int pflag =0;
char charib =0;
int endflag =0, rendflag = 0;
int traceflag =0;
int currtest = 0;
int argno =(-1);
int *stkbase =NULL;
int stkbi =0;
struct stkframe *fbr =NULL;
struct plist *proclist =NULL;
#ifdef PAUSE
int pauselev = 0;
extern int psigflag,errpause;
#endif
struct object *add(), *sub(), *mult(), *div(), *rem(), *and(), *or();
struct object *greatp(), *lessp(), *lmax(), *lmin(), *lis();
struct object *worcat(), *sencat(), *equal(), *lemp(), *comp();
struct object *lnump(), *lsentp(), *lwordp(), *length(), *zerop();
struct object *first(), *butfir(), *last(), *butlas(), *alllk();
struct object *lnamep(), *lrandd(), *rnd(), *sq(), *lpow(), *lsin();
struct object *lcos(), *latan(), *ltime(), *request(), *readlist();
struct object *cmprint(), *cmtype(), *cmoutput(), *lsleep(), *lbreak();
struct object *cmlocal(), *assign(), *cmedit(), *lstop(), *show(), *erase();
struct object *help(), *describe(), *ltrace(), *luntrace(), *lbyecom();
struct object *sometrace();
#ifndef NOTURTLE
struct object *getturtle(), *forward(), *back();
struct object *left(), *right(), *penup(), *cmpendown(), *clearscreen();
struct object *fullscreen(), *splitscreen(), *showturtle();
struct object *hideturtle(), *textscreen(), *cmpenerase(), *pencolor();
struct object *wipeclean(), *penmode(), *penreverse(), *shownp(), *towardsxy();
struct object *setcolor(), *setxy(), *setheading();
struct object *xcor(), *ycor(), *heading(), *getpen();
struct object *scrunch(), *setscrunch();
#endif
struct object *ltopl(), *cmfprint(), *cmftype(), *pots(), *fput(), *lput();
struct object *list(), *loread(), *lowrite(), *fileclose(), *cbreak();
struct object *lfread(), *lfword(), *fileprint(), *filefprint();
struct object *filetype(), *fileftype(), *callunix(), *repcount();
#ifdef AMIGA
struct object *chdir();
#endif
#ifdef DEBUG
struct object *setdebquit(), *setmemtrace(), *setyaccdebug();
#endif
struct object *readchar(), *keyp(), *intpart(), *round(), *toascii();
struct object *tochar(), *loflush(), *settest(), *memberp(), *item();
#ifdef PAUSE
struct object *unpause(), *dopause(), *setipause(), *setqpause(); /* PAUSE */
struct object *seterrpause(), *clrerrpause();
#endif
#ifdef FLOOR
struct object *hitoot(), *lotoot(), *lampon(), *lampoff();
struct object *ftouch(), *btouch(), *ltouch(), *rtouch();
#endif
#ifndef SMALL
struct object *gprop(), *plist(), *pps(), *remprop();
#endif
#ifdef SETCURSOR
struct object *clrtxt(), *setcur();
#endif
struct lexstruct keywords[] =
{
"sum",TWOOP,add,NULL,
"difference",TWOOP,sub,"diff",
"product",TWOOP,mult,NULL,
"quotient",TWOOP,div,NULL,
"remainder",TWOOP,rem,"mod",
"both",TWOOP,and,"and",
"either",TWOOP,or,"or",
"greaterp",TWOOP,greatp,NULL,
"lessp",TWOOP,lessp,NULL,
"maximum",TWOOP,lmax,"max",
"minimum",TWOOP,lmin,"min",
"is",TWOOP,lis,NULL,
"word",TWOOP,worcat,NULL,
"sentence",TWOOP,sencat,"se",
"equalp",TWOOP,equal,NULL,
"emptyp",ONEOP,lemp,NULL,
"not",ONEOP,comp,NULL,
"numberp",ONEOP,lnump,NULL,
"sentencep",ONEOP,lsentp,NULL,
"wordp",ONEOP,lwordp,NULL,
"count",ONEOP,length,NULL,
"zerop",ONEOP,zerop,NULL,
"first",ONEOP,first,NULL,
"butfirst",ONEOP,butfir,"bf",
"last",ONEOP,last,NULL,
"butlast",ONEOP,butlas,"bl",
"thing",ONEOP,alllk,NULL,
"namep",ONEOP,lnamep,NULL,
"random",ONEOP,rnd,"rnd",
"sqrt",ONEOP,sq,NULL,
"pow",TWOOP,lpow,NULL,
"sin",ONEOP,lsin,NULL,
"cos",ONEOP,lcos,NULL,
"arctan",ONEOP,latan,"atan",
"time",NOOP,ltime,NULL,
"request",NOOP,request,NULL,
"readlist",NOOP,readlist,"rl",
"print",ONECOM,cmprint,"pr",
"type",ONECOM,cmtype,NULL,
"output",ONECOM,cmoutput,"op",
"wait",ONECOM,lsleep,NULL,
"local",ONECOM,cmlocal,NULL,
"make",TWOCOM,assign,NULL,
"if",IFCOM,0,NULL,
"to",LTO,0,NULL,
"end",LPEND,0,NULL,
"stop",NOCOM,lstop,NULL,
"break",NOCOM,lbreak,NULL,
"edit",LEDIT,cmedit,"ed",
"go",LGO,0,NULL,
"show",ONECOM,show,"po",
"erase",ONECOM,erase,"er",
"help",NOCOM,help,NULL,
"describe",ONECOM,describe,NULL,
"trace",LTRACE,sometrace,NULL,
"untrace",NOCOM,luntrace,NULL,
"goodbye",NOCOM,lbyecom,"bye",
#ifndef NOTURTLE
"turtle",ONECOM,getturtle,"tur",
"forward",ONECOM,forward,"fd",
"back",ONECOM,back,"bk",
"left",ONECOM,left,"lt",
"right",ONECOM,right,"rt",
#ifdef FLOOR
"hitoot",ONECOM,hitoot,"hit",
"lotoot",ONECOM,lotoot,"lot",
"lampon",NOCOM,lampon,"lon",
"lampoff",NOCOM,lampoff,"loff",
#endif
"penup",NOCOM,penup,"pu",
"pendown",NOCOM,cmpendown,"pd",
"clearscreen",NOCOM,clearscreen,"cs",
"fullscreen",NOCOM,fullscreen,"full",
"splitscreen",NOCOM,splitscreen,"split",
"showturtle",NOCOM,showturtle,"st",
"hideturtle",NOCOM,hideturtle,"ht",
"textscreen",NOCOM,textscreen,"text",
"penerase",NOCOM,cmpenerase,"pe",
"pencolor",ONECOM,pencolor,"penc",
"setcolor",TWOCOM,setcolor,"setc",
"setxy",TWOCOM,setxy,NULL,
"setheading",ONECOM,setheading,"seth",
"wipeclean",NOCOM,wipeclean,"clean",
"penmode",NOOP,penmode,NULL,
"penreverse",NOCOM,penreverse,"px",
"shownp",NOOP,shownp,NULL,
"towardsxy",TWOOP,towardsxy,NULL,
#ifdef FLOOR
"ftouch",NOOP,ftouch,"fto",
"btouch",NOOP,btouch,"bto",
"ltouch",NOOP,ltouch,"lto",
"rtouch",NOOP,rtouch,"rto",
#endif
"xcor",NOOP,xcor,NULL,
"ycor",NOOP,ycor,NULL,
"heading",NOOP,heading,NULL,
"getpen",NOOP,getpen,NULL,
"scrunch",NOOP,scrunch,NULL,
"setscrunch",ONECOM,setscrunch,"setscrun",
#endif
"toplevel",NOCOM,ltopl,NULL,
"fprint",ONECOM,cmfprint,"fp",
"ftype",ONECOM,cmftype,"fty",
"pots",NOCOM,pots,NULL,
"fput",TWOOP,fput,NULL,
"lput",TWOOP,lput,NULL,
"list",TWOOP,list,NULL,
"openread",ONEOP,loread,"openr",
"openwrite",ONEOP,lowrite,"openw",
"close",ONECOM,fileclose,NULL,
"fileread",ONEOP,lfread,"fird",
"fileword",ONEOP,lfword,"fiwd",
"fileprint",TWOCOM,fileprint,"fip",
"filefprint",TWOCOM,filefprint,"fifp",
"filetype",TWOCOM,filetype,"fity",
"fileftype",TWOCOM,fileftype,"fifty",
#ifdef AMIGA
"chdir",ONECOM,chdir,"cd",
"dos",ONECOM,callunix,"unix",
#else
"unix",ONECOM,callunix,NULL,
#endif
"run",RUNCOM,0,NULL,
"repeat",REPCOM,0,NULL,
"repcount",NOOP,repcount,NULL,
#ifdef DEBUG
"debquit",NOCOM,setdebquit,NULL,
"memtrace",NOCOM,setmemtrace,NULL,
"yaccdebug",NOCOM,setyaccdebug,NULL,
#endif
"cbreak",ONECOM,cbreak,NULL,
"readchar",NOOP,readchar,"rc",
"keyp",NOOP,keyp,NULL,
"int",ONEOP,intpart,NULL,
"round",ONEOP,round,NULL,
"ascii",ONEOP,toascii,NULL,
"char",ONEOP,tochar,NULL,
"oflush",NOCOM,loflush,NULL,
#ifndef SMALL
"gprop",TWOOP,gprop,NULL,
"plist",ONEOP,plist,NULL,
"pprop",THREECOM,0,NULL,
"pps",NOCOM,pps,NULL,
"remprop",TWOCOM,remprop,NULL,
#endif
"test",ONECOM,settest,NULL,
"iftrue",LIFTF,(struct object *(*)())1,"ift",
"iffalse",LIFTF,0,"iff",
"memberp",TWOOP,memberp,NULL,
"item",TWOOP,item,"nth",
#ifdef PAUSE
"continue",NOCOM,unpause,"co",
"pause",NOCOM,dopause,NULL,
"setipause",NOCOM,setipause,NULL,
"setqpause",NOCOM,setqpause,NULL,
"errpause",NOCOM,seterrpause,NULL,
"errquit",NOCOM,clrerrpause,NULL,
#endif
#ifdef SETCURSOR
"cleartext",NOCOM,clrtxt,"ct",
"setcursorxy",TWOCOM,setcur,"setcxy",
#endif
NULL,NULL,NULL,NULL,
};
#define uperror {errtold++;YYERROR;}
#ifdef PAUSE
#define catch(X) {if(!setjmp(yerrbuf)){if(flagquit)errhand();catching++;X;catching=0;}else{catching=0;uperror}}
#else
#define catch(X) {X;}
#endif
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
#ifndef YYSTYPE
#define YYSTYPE int
#endif
YYSTYPE yylval;
YYSTYPE yyval;
# define YYERRCODE 256
#line 650
extern struct object *makelist();
#ifdef PAUSE
yylex1()
#else
yylex()
#endif
{
extern short yyerrflag;
register char *str;
char s[100];
char c;
register pc;
register i;
NUMBER dubl;
int floatflag;
FIXNUM fixn;
if (yyerrflag) return(1);
else if (argno==0 && pflag!=1) {
if (fbr->oldyyc==-2) fbr->oldyyc= -1;
return(LAEND);
} else if (endflag==1 && pflag>1) {
endflag=0;
return(LPEND);
}
else if (pflag==2) {
pc= *(stkbase+stkbi++);
if (stkbi==PSTKSIZ-1) {
stkbase= (int *)(*(stkbase+PSTKSIZ-1));
stkbi=1;
}
yylval= *(stkbase+stkbi++);
if (pc==LPROC || pc==CSTRING || pc==UINT || pc==CLIST) {
yylval=(int)localize((struct object *)yylval);
}
if (stkbi==PSTKSIZ-1) {
stkbase= (int *)(*(stkbase+PSTKSIZ-1));
stkbi=1;
}
if (pc== -1) return(0);
else return(pc);
} else if (letflag==1) {
str=s;
while (!index(" \t\n[](){}\";",(c = getchar()))) {
if (c == '\\') c = getchar() /* |0200 */ ;
else if (c == '%') c = ' ' /* |0200 */ ;
*str++ = c;
}
charib=c;
*str='\0';
yylval=(int)localize(objcpstr(s));
letflag=0;
return(CSTRING);
} else if (letflag==2) {
str = s;
while (( (c=getchar())>='a' && c<='z' )
|| (c>='A' && c<='Z') || (c>='0' && c<='9')
|| (c=='.') || (c=='_') ) {
if (c>='A' && c<='Z') c += 040;
*str++ = c;
}
charib = c;
*str = '\0';
letflag = 0;
yylval = (int)localize(objcpstr(s));
return(CSTRING);
}
else if (letflag==3) {
yylval = (int)makelist();
letflag = 4;
return(CLIST);
}
else if (letflag==4) {
letflag = 0;
return(yylval = getchar());
}
while ((c=getchar())==' ' || c=='\t')
;
if (rendflag) {
getbpt = 0;
if (rendflag < 3)
--rendflag;
else if (!thisrun || thisrun->svpflag)
rendflag = 0;
return(RNEND);
}
if (c == '!') /* comment feature */
while ((c=getchar()) && (c != '\n')) ;
if ((c<'a' || c>'z') && (c<'A' || c>'Z')
&& (c<'0' || c>'9') && c!='.') {
yylval=c;
if (c=='\"') letflag=1;
if (c==':') letflag=2;
if (c=='[') letflag=3;
return(c);
}
else if ((c>='0' && c<='9')|| c=='.') {
floatflag = (c=='.');
str=s;
while ((c>='0' && c<='9')||(c=='E')||(c=='e')||(c=='.')) {
*str++=c;
if (c=='.') floatflag++;
if ((c=='e')||(c=='E')) {
floatflag++;
c = getchar();
if ((c=='+')||(c=='-')) {
*str++ = c;
c = getchar();
}
} else c=getchar();
}
charib=c;
*str='\0';
if (floatflag) {
sscanf(s,EFMT,&dubl);
yylval=(int)localize(objdub(dubl));
} else {
sscanf(s,FIXFMT,&fixn);
yylval=(int)localize(objint(fixn));
}
return(UINT);
} else {
if (c < 'a') c += 040;
yylval=(int)(str=s);
*str++=c;
c=getchar();
if (c >= 'A' && c <= 'Z') c += 040;
while ((c>='a' && c<='z') || (c>='0' && c<='9')
|| (c=='.') || (c=='_')) {
*str++=c;
c=getchar();
if (c >= 'A' && c <= 'Z') c += 040;
}
charib=c;
*str='\0';
for (i=0; keywords[i].word; i++) {
if (!strcmp(yylval,keywords[i].word) ||
(keywords[i].abbr &&
!strcmp(yylval,keywords[i].abbr))) {
yylval=i;
return(keywords[i].lexret);
}
}
yylval=(int)localize(objcpstr(s));
return(LPROC);
}
}
#ifdef PAUSE
yylex() {
int x;
#ifdef AMIGA
extern int quitsig;
if (quitsig) {
quitsig = 0;
sigquit();
}
#endif
if (catching) return(yylex1());
if (!setjmp(yerrbuf)) {
if (flagquit) errhand();
catching++;
x = yylex1();
catching=0;
return(x);
} else {
catching=0;
return(12345); /* This should cause an error up there */
}
}
#endif
int isuint(x)
int x;
{
return(x == UINT);
}
int isstored(x)
int x;
{
return(x==UINT || x==LPROC || x==CSTRING || x==CLIST);
}
yyprompt(clear) {
register int i;
if (!ibufptr && !getbpt && !pflag) {
flagquit = 0;
#ifdef PAUSE
if (pauselev > 0) {
for (i=pauselev; --i >=0; )
putchar('-');
}
#endif
putchar('?');
#ifndef NOTURTLE
if ((turtdes<0) && clear)
(*mydpy->state)('*');
#endif
fflush(stdout);
}
}
short yyexca[] ={
-1, 1,
0, -1,
-2, 0,
-1, 20,
60, 22,
62, 22,
61, 22,
43, 22,
45, 22,
42, 22,
47, 22,
92, 22,
94, 22,
-2, 25,
-1, 21,
60, 23,
62, 23,
61, 23,
43, 23,
45, 23,
42, 23,
47, 23,
92, 23,
94, 23,
-2, 26,
-1, 153,
60, 0,
62, 0,
61, 0,
-2, 53,
-1, 155,
60, 0,
62, 0,
61, 0,
-2, 55,
-1, 157,
60, 0,
62, 0,
61, 0,
-2, 57,
-1, 175,
0, 43,
42, 43,
47, 43,
92, 43,
94, 43,
262, 43,
265, 43,
267, 43,
268, 43,
269, 43,
271, 43,
272, 43,
273, 43,
275, 43,
276, 43,
278, 43,
280, 43,
-2, 41,
-1, 176,
0, 44,
262, 44,
265, 44,
267, 44,
268, 44,
269, 44,
271, 44,
272, 44,
273, 44,
275, 44,
276, 44,
278, 44,
280, 44,
-2, 42,
-1, 192,
256, 35,
60, 35,
62, 35,
61, 35,
43, 35,
42, 35,
47, 35,
92, 35,
94, 35,
-2, 24,
};
# define YYNPROD 128
# define YYLAST 1326
short yyact[]={
16, 97, 167, 63, 135, 98, 96, 110, 163, 128,
182, 2, 64, 165, 130, 9, 132, 101, 140, 70,
48, 49, 16, 102, 31, 18, 45, 60, 103, 68,
37, 53, 44, 21, 16, 35, 102, 99, 43, 100,
52, 103, 20, 41, 16, 40, 31, 39, 33, 17,
115, 187, 37, 185, 106, 105, 107, 35, 102, 99,
66, 100, 166, 103, 71, 113, 16, 38, 31, 76,
33, 17, 67, 104, 37, 101, 61, 71, 19, 35,
26, 32, 25, 17, 188, 14, 104, 134, 101, 13,
31, 12, 33, 17, 16, 62, 37, 164, 21, 6,
1, 35, 0, 32, 117, 118, 119, 20, 104, 0,
101, 0, 0, 36, 33, 17, 0, 0, 31, 0,
0, 159, 162, 0, 37, 32, 102, 99, 0, 125,
0, 103, 169, 170, 171, 36, 0, 0, 0, 0,
0, 0, 33, 17, 106, 105, 107, 32, 0, 21,
21, 21, 180, 0, 0, 0, 31, 36, 20, 20,
20, 0, 37, 0, 102, 99, 0, 125, 181, 103,
0, 184, 0, 0, 0, 32, 104, 0, 101, 36,
33, 0, 106, 105, 107, 79, 78, 77, 81, 0,
0, 85, 84, 86, 87, 189, 75, 91, 193, 88,
0, 82, 80, 89, 0, 90, 83, 36, 0, 0,
0, 0, 0, 32, 104, 0, 101, 21, 0, 0,
21, 0, 0, 0, 0, 0, 20, 0, 0, 20,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 36, 190, 0, 0, 27,
28, 29, 15, 0, 192, 24, 22, 4, 23, 5,
42, 191, 133, 11, 0, 7, 10, 46, 129, 47,
8, 27, 28, 29, 15, 69, 30, 24, 22, 4,
23, 5, 42, 0, 0, 11, 0, 7, 10, 46,
131, 47, 8, 27, 28, 29, 15, 0, 30, 24,
22, 4, 23, 5, 42, 194, 0, 11, 0, 7,
10, 46, 3, 47, 8, 27, 28, 29, 15, 0,
30, 24, 22, 4, 23, 5, 42, 0, 0, 11,
0, 7, 10, 46, 59, 47, 8, 0, 0, 0,
0, 0, 0, 27, 28, 29, 0, 31, 30, 65,
54, 0, 0, 37, 42, 102, 99, 0, 125, 0,
103, 46, 0, 47, 0, 0, 0, 0, 0, 0,
0, 33, 0, 106, 105, 107, 0, 0, 139, 0,
0, 27, 28, 29, 31, 122, 30, 0, 54, 0,
37, 0, 42, 0, 0, 35, 0, 0, 0, 46,
0, 47, 0, 0, 32, 104, 31, 101, 33, 137,
0, 0, 37, 0, 0, 0, 0, 35, 31, 0,
0, 0, 0, 0, 37, 0, 0, 0, 0, 35,
33, 0, 0, 165, 102, 99, 36, 100, 0, 103,
31, 32, 33, 0, 0, 0, 37, 0, 0, 0,
0, 35, 106, 105, 107, 0, 0, 0, 0, 174,
0, 0, 178, 32, 33, 31, 0, 0, 0, 0,
0, 37, 0, 36, 0, 32, 35, 31, 0, 0,
0, 0, 0, 37, 104, 0, 101, 0, 35, 33,
0, 0, 0, 0, 0, 36, 0, 32, 0, 31,
0, 33, 0, 0, 0, 37, 0, 36, 0, 0,
35, 0, 186, 0, 0, 0, 0, 164, 0, 0,
0, 0, 32, 33, 31, 0, 0, 0, 0, 36,
37, 0, 0, 0, 32, 35, 31, 0, 0, 0,
0, 0, 37, 0, 0, 0, 0, 35, 33, 0,
0, 0, 0, 0, 36, 0, 32, 0, 31, 0,
33, 0, 0, 0, 37, 0, 36, 0, 0, 35,
0, 0, 27, 28, 29, 0, 0, 30, 0, 54,
31, 32, 33, 42, 0, 0, 37, 0, 36, 0,
46, 35, 47, 32, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 33, 0, 176, 0, 0, 27,
28, 29, 0, 36, 30, 32, 54, 0, 0, 0,
42, 0, 0, 0, 0, 36, 0, 46, 93, 47,
0, 27, 28, 29, 0, 0, 30, 32, 54, 0,
158, 0, 42, 27, 28, 29, 0, 36, 30, 46,
54, 47, 0, 0, 42, 0, 0, 0, 0, 0,
0, 46, 156, 47, 0, 27, 28, 29, 0, 36,
30, 0, 54, 0, 0, 0, 42, 0, 0, 0,
0, 0, 31, 46, 0, 47, 0, 154, 37, 0,
27, 28, 29, 35, 0, 30, 0, 54, 0, 152,
0, 42, 27, 28, 29, 0, 33, 30, 46, 54,
47, 0, 0, 42, 0, 0, 0, 0, 0, 0,
46, 150, 47, 0, 27, 28, 29, 0, 0, 30,
0, 54, 0, 0, 0, 42, 0, 0, 0, 32,
0, 31, 46, 0, 47, 0, 148, 37, 0, 27,
28, 29, 35, 0, 30, 0, 54, 0, 146, 0,
42, 27, 28, 29, 0, 33, 30, 46, 54, 47,
0, 36, 42, 0, 0, 0, 31, 0, 0, 46,
144, 47, 37, 27, 28, 29, 0, 35, 30, 0,
54, 0, 0, 0, 42, 0, 0, 0, 32, 0,
33, 46, 142, 47, 0, 27, 28, 29, 0, 0,
30, 31, 54, 0, 0, 0, 42, 37, 0, 0,
0, 0, 35, 46, 0, 47, 0, 0, 0, 0,
36, 0, 0, 32, 0, 33, 0, 31, 0, 0,
0, 0, 0, 37, 0, 0, 0, 0, 35, 31,
0, 0, 0, 0, 0, 37, 0, 0, 0, 0,
35, 33, 0, 0, 0, 36, 0, 0, 32, 0,
0, 31, 0, 33, 0, 0, 0, 37, 0, 0,
0, 0, 35, 0, 0, 0, 0, 0, 0, 0,
0, 0, 31, 0, 32, 33, 0, 0, 37, 0,
36, 0, 0, 35, 73, 0, 32, 27, 28, 29,
0, 0, 30, 0, 54, 0, 33, 0, 42, 0,
0, 0, 0, 0, 0, 46, 36, 47, 32, 0,
0, 31, 0, 0, 0, 0, 0, 37, 36, 0,
0, 0, 35, 60, 0, 0, 0, 0, 0, 32,
0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
36, 0, 0, 114, 0, 0, 27, 28, 29, 0,
0, 30, 0, 54, 0, 102, 99, 42, 100, 0,
103, 36, 0, 0, 46, 0, 47, 0, 32, 0,
0, 0, 61, 106, 105, 107, 0, 0, 109, 0,
0, 27, 28, 29, 0, 0, 30, 0, 54, 0,
0, 0, 42, 0, 0, 0, 0, 0, 0, 46,
36, 47, 0, 0, 0, 104, 0, 101, 0, 0,
0, 0, 0, 95, 0, 0, 27, 28, 29, 0,
0, 30, 0, 54, 0, 0, 0, 42, 0, 0,
0, 0, 0, 0, 46, 0, 47, 0, 0, 58,
0, 0, 27, 28, 29, 0, 0, 30, 0, 54,
0, 56, 0, 42, 27, 28, 29, 0, 0, 30,
46, 54, 47, 0, 0, 42, 0, 0, 0, 0,
0, 0, 46, 51, 47, 0, 27, 28, 29, 0,
0, 30, 0, 54, 0, 0, 0, 42, 0, 0,
0, 0, 0, 0, 46, 0, 47, 27, 28, 29,
0, 0, 30, 0, 54, 0, 0, 0, 42, 0,
0, 0, 0, 0, 0, 46, 0, 47, 0, 0,
0, 34, 0, 0, 0, 0, 0, 0, 50, 55,
57, 0, 0, 0, 0, 0, 111, 28, 29, 0,
0, 30, 0, 54, 72, 74, 0, 42, 0, 92,
94, 0, 0, 0, 46, 0, 47, 108, 0, 112,
116, 0, 0, 0, 0, 0, 0, 0, 120, 121,
0, 0, 0, 0, 0, 0, 123, 124, 0, 126,
0, 0, 0, 0, 127, 0, 0, 0, 0, 0,
0, 0, 0, 0, 136, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 138, 0, 0, 0, 0, 0,
0, 141, 143, 145, 147, 149, 151, 153, 155, 157,
0, 0, 160, 161, 0, 0, 0, 168, 0, 0,
0, 0, 0, 172, 0, 173, 0, 175, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 160, 183, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
0, 0, 0, 0, 0, 160 };
short yypact[]={
-1000, 56,-1000,-1000, 24, 24, 837, 815, 803,-1000,
17,-253,-1000,-1000, 17,-1000,-1000,-1000,-1000, 19,
-1000,-1000, 648, 858, -74,-1000,-1000, 372, 777,-1000,
-1000,-257,-273,-258, -6, 742,-252, 897, 707,-1000,
-1000,-1000,-1000,-1000,-1000,-1000, 858, 858,-1000,-1000,
933,-1000,-1000,-1000, 648, 313,-1000, 313,-1000,-1000,
-1000,-1000, 858,-1000,-1000,-1000, 12, 6,-1000,-1000,
-1000,-259, 313,-1000, 933,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 122,-1000, -6,-1000,-1000, -75,-1000, 546,
524, 502, 490, 465, 443, 431, 406, 384,-1000,-1000,
858, 372, 392,-270,-1000, 858, -6, 12, 12, 12,
-6, 313,-1000, 313, 933, 350, 313, 933,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000, 84,-1000, -6,-1000,
-1000, -19,-1000, -19,-1000,-1000,-1000, -77,-1000, -77,
-1000, -77,-1000, 16,-1000, 16,-1000, 16,-1000, -28,
313, 122, -28,-1000,-1000,-1000,-1000,-1000, -6,-1000,
-1000,-1000, -6, 313,-1000,-1000,-1000, 933,-1000, -6,
-1000,-1000,-1000, 313,-1000, -10,-1000,-1000, 34,-1000,
-1000,-1000,-1000,-1000,-1000 };
short yypgo[]={
0, 100, 9, 15, 99,1141, 334, 95, 91, 89,
85, 40, 31, 84, 82, 80, 10, 8, 78, 72,
69, 19, 67, 65, 62, 53, 51, 50, 60, 47,
45, 43, 38, 14, 32, 26, 25 };
short yyr1[]={
0, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 4,
4, 4, 5, 5, 13, 10, 10, 11, 11, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 16, 16, 9, 9, 9, 9, 18, 18,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 19, 19, 21, 14, 14,
23, 23, 27, 27, 24, 25, 25, 25, 25, 26,
26, 22, 28, 28, 28, 15, 15, 15, 29, 30,
31, 32, 34, 35, 35, 33, 8, 36, 36, 7,
7, 17, 17, 6, 6, 6, 3, 3 };
short yyr2[]={
0, 0, 2, 2, 2, 2, 3, 2, 4, 2,
5, 2, 1, 2, 4, 2, 1, 1, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
3, 2, 2, 2, 1, 1, 2, 3, 2, 3,
3, 3, 3, 2, 2, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
4, 3, 1, 2, 3, 2, 3, 2, 2, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 2, 2, 5, 2,
0, 1, 1, 2, 1, 0, 3, 2, 2, 1,
2, 1, 0, 2, 2, 1, 1, 1, 3, 3,
3, 2, 3, 4, 2, 1, 3, 4, 3, 0,
1, 1, 1, 1, 1, 0, 1, 1 };
short yychk[]={
-1000, -1, -2, 256, 267, 269, -4, 275, 280, -3,
276, 273, -8, -9, -10, 262, 10, 59, -36, -18,
-11, -12, 266, 268, 265, -14, -15, 259, 260, 261,
264, 34, 91, 58, -5, 45, 123, 40, -22, -29,
-30, -31, 270, -32, -34, -35, 277, 279, -3, -3,
-5, 256, -11, -12, 266, -5, 256, -5, 256, -6,
10, 59, -7, 256, 265, -6, -28, -19, 10, 256,
-21, 58, -5, 256, -5, 270, -20, 261, 260, 259,
276, 262, 275, 280, 266, 265, 267, 268, 273, 277,
279, 271, -5, 256, -5, 256, 263, 274, 263, 43,
45, 94, 42, 47, 92, 61, 60, 62, -5, 256,
259, 259, -5, -23, 256, -27, -5, -28, -28, -28,
-5, -5, -6, -5, -5, 45, -5, -5, -2, 256,
-33, 278, 10, 256, -21, 263, -5, -6, -5, 256,
93, -5, 256, -5, 256, -5, 256, -5, 256, -5,
256, -5, 256, -5, 256, -5, 256, -5, 256, -16,
-5, -5, -16, -17, 125, 41, -24, 272, -5, -33,
-33, -33, -5, -5, -6, -5, 256, -5, -6, -5,
-3, -17, -16, -5, -17, -25, -6, -26, -13, -2,
256, 271, 264, -2, 271 };
short yydef[]={
1, -2, 2, 3, 20, 21, 0, 0, 0, 12,
125, 119, 16, 17, 125, 19, 126, 127, 102, 0,
-2, -2, 0, 0, 0, 27, 28, 0, 0, 34,
35, 0, 0, 0, 0, 0, 0, 0, 90, 105,
106, 107, 101, 102, 102, 102, 0, 0, 4, 5,
125, 7, 22, 23, 0, 0, 9, 0, 11, 13,
123, 124, 0, 15, 120, 18, 0, 0, 65, 67,
85, 0, 0, 114, 125, 68, 69, 70, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
83, 84, 0, 31, 32, 33, 36, 0, 38, 0,
0, 0, 0, 0, 0, 0, 0, 0, 43, 44,
0, 0, 0, 0, 89, 91, 92, 0, 0, 0,
111, 0, 6, 0, 125, 0, 0, 125, 103, 104,
116, 115, 64, 66, 86, 87, 0, 118, 29, 30,
37, 39, 40, 41, 42, 45, 46, 47, 48, 49,
50, 51, 52, -2, 54, -2, 56, -2, 58, 0,
62, 62, 0, 61, 121, 122, 95, 94, 93, 108,
109, 110, 112, 0, 8, -2, -2, 125, 14, 113,
117, 59, 63, 29, 60, 0, 10, 88, 0, 97,
98, 99, -2, 96, 100 };
# define YYFLAG -1000
# define YYERROR goto yyerrlab
# define YYACCEPT return(0)
# define YYABORT return(1)
/* parser for yacc output */
int yydebug = 0; /* 1 for debugging */
YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
int yychar = -1; /* current input token number */
int yynerrs = 0; /* number of errors */
short yyerrflag = 0; /* error recovery flag */
yyparse()
{
short yys[YYMAXDEPTH];
short yyj, yym;
register YYSTYPE *yypvt;
register short yystate, *yyps, yyn;
register YYSTYPE *yypv;
register short *yyxi;
yystate = 0;
yychar = -1;
yynerrs = 0;
yyerrflag = 0;
yyps = &yys[-1];
yypv = &yyv[-1];
yystack: /* put a state and value onto the stack */
if ( yydebug )
printf( "state %d, char 0%o\n", yystate, yychar );
if ( ++yyps > &yys[YYMAXDEPTH] ) {
yyerror( "yacc stack overflow" );
return(1);
}
*yyps = yystate;
++yypv;
*yypv = yyval;
yynewstate:
yyn = yypact[yystate];
if ( yyn <= YYFLAG )
goto yydefault; /* simple state */
if ( yychar < 0 )
if ( (yychar = yylex()) < 0 )
yychar = 0;
if ( (yyn += yychar) < 0 || yyn >= YYLAST )
goto yydefault;
if ( yychk[ yyn=yyact[ yyn ] ] == yychar ) {
/* valid shift */
yychar = -1;
yyval = yylval;
yystate = yyn;
if ( yyerrflag > 0 )
--yyerrflag;
goto yystack;
}
yydefault:
/* default state action */
if ( (yyn = yydef[yystate]) == -2 ) {
if ( yychar < 0 )
if ( (yychar = yylex()) < 0 )
yychar = 0;
/* look through exception table */
for ( yyxi = yyexca; (*yyxi != (-1)) || (yyxi[1] != yystate) ; yyxi += 2 )
; /* VOID */
for (yyxi += 2; *yyxi >= 0; yyxi += 2) {
if ( *yyxi == yychar )
break;
}
if ( (yyn = yyxi[1]) < 0 )
return(0); /* accept */
}
if ( yyn == 0 ) {
/* error */
/* error ... attempt to resume parsing */
switch ( yyerrflag ) {
case 0: /* brand new error */
yyerror( "syntax error" );
yyerrlab:
++yynerrs;
case 1:
case 2: /* incompletely recovered error ... try again */
yyerrflag = 3;
/* find a state where "error" is a legal shift action */
while ( yyps >= yys ) {
yyn = yypact[*yyps] + YYERRCODE;
if ( yyn >= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ) {
yystate = yyact[yyn]; /* simulate a shift of "error" */
goto yystack;
}
yyn = yypact[*yyps];
/* the current yyps has no shift onn "error", pop stack */
if ( yydebug )
printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
--yyps;
--yypv;
}
/* there is no state on the stack with an error shift ... abort */
yyabort:
return(1);
case 3: /* no shift yet; clobber input char */
if ( yydebug )
printf( "error recovery discards char %d\n", yychar );
if ( yychar == 0 )
goto yyabort; /* don't discard EOF, quit */
yychar = -1;
goto yynewstate; /* try again in the same state */
}
}
/* reduction by production yyn */
if ( yydebug )
printf("reduce %d\n", yyn);
yyps -= yyr2[yyn];
yypvt = yypv;
yypv -= yyr2[yyn];
yyval = yypv[1];
yym = yyn;
/* consult goto table to find next state */
yyn = yyr1[yyn];
yyj = yypgo[yyn] + *yyps + 1;
if ( yyj >= YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn )
yystate = yyact[yypgo[yyn]];
switch (yym) {
case 2:
# line 272
{
popname[0] = '\0';
#ifdef PAUSE
if (psigflag) dopause();
#endif
yyprompt(1);
} break;
case 3:
# line 279
{
popname[0] = '\0';
if (!errtold) {
logoyerror();
}
errtold = 0;
errwhere();
#ifdef PAUSE
if ((!errpause&&!pauselev) || !fbr)
#endif
errzap();
yyerrok;yyclearin;
yyprompt(0);
} break;
case 4:
# line 294
{
catch(doedit(););
yyval = -1;
} break;
case 5:
# line 298
{
catch(ltrace(););
yyval = -1;
} break;
case 6:
# line 302
{
catch(yyval=(int)(*keywords[yypvt[-2]].lexval)(yypvt[-1]););} break;
case 7:
# line 304
{notenf(yypvt[-1]);uperror;} break;
case 8:
# line 305
{
catch((*keywords[yypvt[-3]].lexval)(yypvt[-2],yypvt[-1]);); yyval = -1;} break;
case 9:
# line 307
{notenf(yypvt[-1]);uperror;} break;
case 10:
# line 308
{
#ifndef SMALL
catch(pprop(yypvt[-3],yypvt[-2],yypvt[-1]););
#endif
yyval = -1;
} break;
case 11:
# line 314
{
if (!errtold) {
puts("Not enough inputs to pprop.");
}
uperror;
} break;
case 12:
# line 320
{ yyval= -1; } break;
case 13:
# line 321
{
catch((*keywords[yypvt[-1]].lexval)();); yyval= -1;} break;
case 14:
# line 323
{
catch(go(yypvt[-1]););
yyval= -1;
} break;
case 15:
# line 327
{notenf(yypvt[-1]);uperror;} break;
case 16:
# line 328
{
if ((yypvt[-0] != -1) && !endflag) {
if (!errtold)
pf1("You don't say what to do with %l.\n",yypvt[-0]);
uperror;
}
yyval = yypvt[-0];
} break;
case 17:
# line 336
{
if (yypvt[-0]== -1)
uperror
else
catch(proccreate(yypvt[-0]););
yyval = -1;
} break;
case 18:
# line 343
{
if (thisrun && !pflag) {
yyval = yypvt[-1];
} else {
if((yypvt[-1] != -1) && !endflag) {
if (!errtold)
pf1("You don't say what to do with %l\n",yypvt[-1]);
uperror;
}
}
} break;
case 22:
# line 357
{
if (yypvt[-0] == -1) {
if (!errtold) {
printf("%s didn't output.\n",
popname);
}
uperror;
}
} break;
case 24:
# line 368
{ yyline=((struct object *)yypvt[-0])->obint; mfree(yypvt[-0]); yyval = 0;} break;
case 29:
# line 375
{
catch(yyval=(int)(*keywords[yypvt[-2]].lexval)(yypvt[-1],yypvt[-0]););
} break;
case 30:
# line 378
{op2er1(yypvt[-2],yypvt[-1]);uperror;} break;
case 31:
# line 379
{notenf(yypvt[-1]);uperror;} break;
case 32:
# line 380
{
catch(yyval=(int)(*keywords[yypvt[-1]].lexval)(yypvt[-0]););
} break;
case 33:
# line 383
{notenf(yypvt[-1]);uperror;} break;
case 34:
# line 384
{
catch(yyval=(int)(*keywords[yypvt[-0]].lexval)(););
} break;
case 36:
# line 388
{ yyval=yypvt[-0]; } break;
case 37:
# line 389
{ yyval=yypvt[-1]; } break;
case 38:
# line 390
{
catch(yyval=(int)alllk(yypvt[-0]););
} break;
case 39:
# line 393
{
catch(yyval=(int)add(yypvt[-2],yypvt[-0]););
} break;
case 40:
# line 396
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 41:
# line 397
{
catch(yyval=(int)sub(yypvt[-2],yypvt[-0]););
} break;
case 42:
# line 400
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 43:
# line 401
{
catch(yyval=(int)opp(yypvt[-0]););
} break;
case 44:
# line 404
{unerr('-');uperror;} break;
case 45:
# line 405
{
catch(yyval=(int)lpow(yypvt[-2],yypvt[-0]););
} break;
case 46:
# line 408
{ inferr(yypvt[-2],yypvt[-1]);uperror; } break;
case 47:
# line 409
{
catch(yyval=(int)mult(yypvt[-2],yypvt[-0]););
} break;
case 48:
# line 412
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 49:
# line 413
{
catch(yyval=(int)div(yypvt[-2],yypvt[-0]););
} break;
case 50:
# line 416
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 51:
# line 417
{
catch(yyval=(int)rem(yypvt[-2],yypvt[-0]););
} break;
case 52:
# line 420
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 53:
# line 421
{
catch(yyval=(int)equal(yypvt[-2],yypvt[-0]);)
} break;
case 54:
# line 424
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 55:
# line 425
{
catch(yyval=(int)lessp(yypvt[-2],yypvt[-0]););
} break;
case 56:
# line 428
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 57:
# line 429
{
catch(yyval=(int)greatp(yypvt[-2],yypvt[-0]););
} break;
case 58:
# line 432
{inferr(yypvt[-2],yypvt[-1]);uperror;} break;
case 59:
# line 433
{
catch(yyval=multiop(yypvt[-2],globcopy(multarg)););
lfree(multarg);
multarg = 0;
} break;
case 60:
# line 438
{
catch(yyval=multiop(yypvt[-2],globcopy(multarg)););
lfree(multarg);
multarg = 0;
} break;
case 61:
# line 443
{yyval=yypvt[-1];} break;
case 62:
# line 445
{
catch(multarg = globcons(yypvt[-0],0););
mfree(yypvt[-0]);
multnum = 1;
} break;
case 63:
# line 450
{
catch(multarg = globcons(yypvt[-1],multarg););
mfree(yypvt[-1]);
multnum++;
} break;
case 64:
# line 455
{
strcpy(titleptr,"\n");
yyval=yypvt[-2];
} break;
case 65:
# line 459
{
strcpy(titleptr,"\n");
yyval=yypvt[-1];
} break;
case 66:
# line 463
{
mfree(yypvt[-2]);
terr();
yyval= -1;
} break;
case 67:
# line 468
{
mfree(yypvt[-1]);
terr();
yyval= -1;
} break;
case 68:
# line 473
{
titleptr=cpystr(titlebuf,"to ",
((struct object *)(yypvt[-0]))->obstr,NULL);
yyval=yypvt[-0];
} break;
case 69:
# line 478
{
if (!errtold) printf("Can't redefine primitive %s\n",
keywords[yypvt[-0]].word);
uperror;
} break;
case 85:
# line 486
{titleptr=cpystr(titleptr," :",
((struct object *)(yypvt[-0]))->obstr,NULL);
mfree(yypvt[-0]);
} break;
case 86:
# line 490
{titleptr=cpystr(titleptr," :",
((struct object *)(yypvt[-0]))->obstr,NULL);
mfree(yypvt[-0]);
} break;
case 87:
# line 494
{yyval=yypvt[-0];} break;
case 88:
# line 495
{
yyval=yypvt[-1];
frmpop(yypvt[-1]);
} break;
case 89:
# line 499
{
if (!errtold) printf("Not enough inputs to %s\n",
proclist->procname->obstr);
uperror;
} break;
case 92:
# line 505
{
catch(argassign(yypvt[-0]););
} break;
case 93:
# line 508
{
catch(argassign(yypvt[-0]););
} break;
case 94:
# line 511
{procprep();} break;
case 95:
# line 512
{yyline=1; yyval = -1;} break;
case 96:
# line 513
{
popname[0] = '\0';
#ifdef PAUSE
if (psigflag) dopause();
if (thisrun && thisrun->str == (struct object *)(-1))
yyprompt(1);
#endif
yyval=yypvt[-0];
} break;
case 97:
# line 522
{
popname[0] = '\0';
if (pflag) yyline++;
#ifdef PAUSE
if (psigflag) dopause();
if (thisrun && thisrun->str == (struct object *)(-1))
yyprompt(1);
#endif
yyval=yypvt[-0];
} break;
case 98:
# line 532
{
popname[0] = '\0';
#ifdef PAUSE
if ((!errpause&&!pauselev) || !fbr)
#endif
uperror;
#ifdef PAUSE
if (!errtold) {
logoyerror();
}
errtold = 0;
errwhere();
yyerrok;yyclearin;
if (thisrun && thisrun->str == (struct object *)(-1))
yyprompt(0);
#endif
} break;
case 101:
# line 551
{
catch(newproc(yypvt[-0]););
} break;
case 102:
# line 554
{yyval = -1;} break;
case 103:
# line 555
{
popname[0] = '\0';
#ifdef PAUSE
if (psigflag) dopause();
if (thisrun && thisrun->str == (struct object *)(-1))
yyprompt(1);
#endif
yyval=yypvt[-0];
} break;
case 104:
# line 564
{
popname[0] = '\0';
#ifdef PAUSE
if ((!errpause&&!pauselev) || !fbr)
#endif
uperror;
#ifdef PAUSE
if (!errtold) {
logoyerror();
}
errtold = 0;
errwhere();
yyerrok;yyclearin;
if (thisrun && thisrun->str == (struct object *)(-1))
yyprompt(0);
#endif
} break;
case 108:
# line 582
{
unrun();
yyval = yypvt[-1];
strcpy(popname,"run");
} break;
case 109:
# line 587
{
unrun();
yyval = yypvt[-1];
strcpy(popname,"repeat");
} break;
case 110:
# line 592
{
unrun();
yyval = yypvt[-1];
strcpy(popname,"if");
} break;
case 111:
# line 597
{
catch(dorun(yypvt[-0],(FIXNUM)0););
} break;
case 112:
# line 600
{
catch(dorep(yypvt[-1],yypvt[-0]););
} break;
case 113:
# line 603
{
{
int i;
catch(i = truth(yypvt[-2]););
if (i) {
catch(dorun(yypvt[-1],(FIXNUM)0););
mfree(yypvt[-0]);
} else {
catch(dorun(yypvt[-0],(FIXNUM)0););
mfree(yypvt[-1]);
}
}
} break;
case 114:
# line 617
{
if (!errtold) printf("Not enough inputs to if.\n");
uperror;
} break;
case 116:
# line 622
{
unrun();
yyval = yypvt[-1];
} break;
case 117:
# line 626
{
{
int i;
catch(i = truth(yypvt[-2]););
if (i) {catch(dorun(yypvt[-1],(FIXNUM)0););}
else {
catch(dorun(0,(FIXNUM)0););
mfree(yypvt[-1]);
}
}
} break;
case 118:
# line 638
{
if ((int)keywords[yypvt[-2]].lexval==currtest) {
catch(dorun(yypvt[-1],(FIXNUM)0););
} else {
catch(dorun(0,(FIXNUM)0););
mfree(yypvt[-1]);
}
} break;/* End of actions */
}
goto yystack; /* stack new state and value */
}